﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using NPMonitor.Interfaces;
using NPMonitor.Implementation.Store;

namespace NPMonitor.Implementation
{
    /// <summary>
    /// The default concreted implementation of <see cref="IStoreManager"/>
    /// </summary>
    public sealed class StoreManager : IStoreManager
    {
        #region Private Members

        private readonly static StoreManager current = new StoreManager();

        #endregion

        #region Constructors

        public StoreManager()
        {
        }

        public static StoreManager Current
        {
            get
            {
                return current;
            }
        }

        #endregion

        #region IStoreManager Members

        public IJobDefinitionStore JobDefinitionStore
        {
            get
            {
                return new JobDefinitionStore();
            }
        }

        public IMachineStore MachineStore
        {
            get { return new MachineStore(); }
        }

        public IWorkflowStore WorkflowStore
        {
            get { return new WorkflowStore(); }
        }

        public IJobStore2 JobStore
        {
            get { return new JobStore(); }
        }

        public INotificationStore NotificationStore
        {
            get { return new NotificationStore(); }
        }

        public IUserStore UserStore
        {
            get { return new UserStore(); }
        }

        public IMailStore MailStore
        {
            get { return new MailStore(); }
        }

        public IReportStore ReportStore
        {
            get { return new ReportStore(); }
        }

        #endregion
    }
}
